/**
 * 
 * @param {*} value 
 * @returns type
 * @description typeof  检测 null和object 返回是object类型其余z正常返回
 *              Null	"object"
 *              任何其他对象	"object"
 *              Undefined	"undefined"
 *              Boolean	"boolean"
 *              Number	"number"
 *              String	"string"
 *              Symbol （ECMAScript 6 新增）	"symbol"
 *              宿主对象（由JS环境提供）	Implementation-dependent
 *              函数对象（[[Call]] 在ECMA-262条款中实现了）	"function"
 *               
 */

function getType(value){
    // 如果是null就直接返回，typeof 检测 null 返回是object
    if(value === null){
        return value + ''
    }
    // 判断数据是以用类型即对象的情况
    if(typeof value === "object"){
        let valueClass = Object.prototype.toString.call(value)
        type = valueClass.pop()
        // 方法将字符串转换为小写。
        return type.join("").toLowerCase()
    }
    else{
        // 判断数据如果是基本数据类型和函数的情况，直接返回
        return typeof value
    }
}